main: Don't synthesize crossing events when nothing changed
authorBenjamin Otte <otte@redhat.com>
Sat, 22 Feb 2020 03:27:06 +0000 (04:27 +0100)
committerBenjamin Otte <otte@redhat.com>
Sat, 22 Feb 2020 06:33:40 +0000 (07:33 +0100)
This was especially bad because it was confusing the event controllers
so much, they'd emit leave + enter events every time the mouse moved.

gtk/gtkmain.c

index 98bb83dd2247591f924acdc083eea83cac60940f..01e2f246cc06cf833667dff1ae560db2f4724d56 100644 (file)
@@ -1321,6 +1321,9 @@ gtk_synthesize_crossing_events (GtkRoot         *toplevel,
   GtkWidget *prev;
   gboolean seen_ancestor;
 
+  if (old_target == new_target)
+    return;
+
   if (old_target && new_target)
     ancestor = gtk_widget_common_ancestor (old_target, new_target);
   else